package com.example.medmobile;

import java.util.Collections;
import java.util.List;

import utils.GoogleMapsAPI;
import WebService.SoapWebService;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Handler;

import com.google.appengine.medmobileserver.business.ListaResultadoBusca;
import com.google.appengine.medmobileserver.business.Profissional;

public class ResultadoBuscaHandler extends ResultadoBusca {

	@Override
	protected void CarregaListaPorGPS(final int idEspecialidade,
			final int idPlanoSaude, final double latitude,
			final double longitude, final String sData, final String sHora, final Context context) {
		try {
			String s = "";
			dialog = ProgressDialog.show(context,
					"Busca", "Carregando o resultado da busca.", true, false);
			new Thread() {
				public void run() {
					List<Profissional> li = SoapWebService.BuscaProfissionalLocalizacao(
							idEspecialidade, idPlanoSaude, latitude, longitude, sData, sHora);
					lista = new ListaResultadoBusca();
					for (Profissional p : li) {
						String sLatLongIni = Global.getCurrentLocation().getLatitude()+","+Global.getCurrentLocation().getLongitude();
						String sLatLongFinal = p.getLatitude()+","+p.getLongitude();						
						GoogleMapsAPI map = new GoogleMapsAPI(sLatLongIni, sLatLongFinal);
						try
						{
						lista.add(new com.google.appengine.medmobileserver.business.ResultadoBusca(p, map.getDistanceValue(), map.getDistanceText(), true));
						}
						catch (Exception E)
						{
						 String s = E.getMessage();
						}
					}
					
					Collections.sort(lista);

					runOnUiThread(new Runnable() {
						public void run() {
						try {
							ResultadoBuscaAdapter ra = new ResultadoBuscaAdapter(
									context, lista, sData, sHora);
							listView.setAdapter(ra);
							listView.getAdapter().areAllItemsEnabled();
							ra.notifyDataSetChanged();
						} finally {
							handler.post(new Runnable() {
								
								@Override
								public void run() {
									dialog.dismiss();
									
								}
							});
							
						}
						}
					});

				}
			}.start();

		} catch (Exception e) {
			e.getMessage();
		}
	}

	@Override
	protected void CarregaListaPorCidade(final int idEspecialidade, final int idPlanoSaude,
			final String sEstado,final String sCidade,  final String sData,  final String sHora,  final Context context) {
		try {
			String s = "";
			dialog = ProgressDialog.show(context,
					"Busca", "Carregando o resultado da busca.", true, false);
			new Thread() {
				public void run() {
					List<Profissional> li =  SoapWebService.BuscaProfissionalAvancado(
							idEspecialidade, idPlanoSaude, sEstado ,sCidade, sData, sHora);
					lista = new ListaResultadoBusca();
					for (Profissional p : li) {
						lista.add(new com.google.appengine.medmobileserver.business.ResultadoBusca(p, 0, "", false));	
					}
					
					
					runOnUiThread(new Runnable() {
						public void run() {
							try {

							ResultadoBuscaAdapter ra = new ResultadoBuscaAdapter(
									context, lista,sData,sHora);
							listView.setAdapter(ra);
							
							} finally {
								handler.post(new Runnable() {
									
									@Override
									public void run() {
										dialog.dismiss();
										
									}
								});
								
							}
				
						}
					});

				}
			}.start();

		} catch (Exception e) {
			e.getMessage();
		}
	}
}
